package com.wnxy.mallserver.controller;

import com.wnxy.mallserver.response.ResPage;
import com.wnxy.mallserver.response.ResponseResult;
import com.wnxy.mallserver.service.CartService;
import com.wnxy.mallserver.vo.AddCartVo;
import com.wnxy.mallserver.vo.CartVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * controller的作用
 * 1.接收前端提交的数据
 * 2.将数据封装好给service
 * 3.获取service的结果并返回给前端
 */

@Slf4j
@RestController
@RequestMapping("/cart")
public class CartController {
    @Resource
    private CartService cartService;

    /**添加购物车*/
//    @RequirePerms("cart:add")
    @PostMapping("/add")
    public ResponseResult add(@RequestBody AddCartVo addCartVo, HttpSession httpSession){

        int uid = (int) httpSession.getAttribute("uid");
        addCartVo.setUid(uid);
        //在购物车中添加数据并返回给前端
        return new ResponseResult<>(ResponseResult.OK,cartService.add(addCartVo));
    }


    /**查询当前登录用户的购物车中的商品信息*/
//    @RequirePerms("cart:find")
    @GetMapping("/queryCartByUid/{page}/{size}")//若路径中参数个数很多，在方法的形参可以是一个对象，会自动将数据封装成该对象。注：对象中的属性必须与路径中的名字一样
    public ResponseResult<ResPage<List<CartVo>>> queryCartByUid(@PathVariable("page") Integer page, @PathVariable("size") Integer size, HttpSession httpSession){
        //接收分页数据
        log.debug("分页数据{},{}",page,size);
        //1.获取用户uid
        int uid = (int) httpSession.getAttribute("uid");
        log.debug("当前用户的id" + uid);

        //2.将查询到的数据返回给前端
        return new ResponseResult<>(ResponseResult.OK,cartService.queryCartByUid(uid,page,size));
    }

    /**删除购物车*/
//    @RequirePerms("cart:delete")
    @DeleteMapping("/delById/{id}")
    public ResponseResult<Boolean> delById(@PathVariable("id") Integer id){

        return new ResponseResult(ResponseResult.OK,cartService.delById(id));
    }

}
